package com.l024.easysecurity.modules.sys.service.impl;

import com.l024.easysecurity.common.page.PageData;
import com.l024.easysecurity.common.page.PageParams;
import com.l024.easysecurity.common.utils.R;
import com.l024.easysecurity.modules.sys.dao.SysMenuMapper;
import com.l024.easysecurity.modules.sys.entity.SysMenu;
import com.l024.easysecurity.modules.sys.service.SysMenuService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 菜单
 */
@Service
public class SysMenuServiceImpl implements SysMenuService {
    @Autowired
    private SysMenuMapper sysMenuMapper;

    /**
     * 分页条件查询
     * @param sysMenu
     * @param pageParam
     * @return
     */
    @Override
    public PageData<SysMenu> selectPageSysMenu(SysMenu sysMenu, PageParams pageParam) {
        List<SysMenu> sysMenus = sysMenuMapper.selectPageSysMenu(sysMenu, pageParam);
        Long count = sysMenuMapper.selectPageCount(sysMenu);
        return PageData.buildPage(sysMenus,count,pageParam.getPageSize(),pageParam.getPageNum());
    }

    /**
     * 添加菜单
     * @param sysMenu
     * @return
     */
    @Override
    public R addSysMenu(SysMenu sysMenu) {
        if(sysMenu!=null){
            if(StringUtils.isEmpty(sysMenu.getName())){
                return R.error("菜单名不可为null");
            }
            //判断是否已经存在此菜单
            Long aLong = sysMenuMapper.selectMenuIsExit(sysMenu);
            if(aLong>0){
                return R.error("此菜单已经存在");
            }
            sysMenuMapper.addMenu(sysMenu);
            return R.ok("添加成功");
        }
        return R.error("添加数据不可为null");
    }

    @Override
    public R delSysMenu(long menuId) {
        if(menuId>0){
            //先判断是否有角色绑定这个菜单
            long l = sysMenuMapper.menuHaveRole(menuId);
            if(l>0){
                return R.error("删除失败,此菜单有绑定的角色");
            }
            sysMenuMapper.delMenu(menuId);
            return R.ok("删除成功");
        }
        return R.error("菜单id不存在");
    }

    @Override
    public R updateMenu(SysMenu sysMenu) {
        if(sysMenu!=null){
            sysMenuMapper.updateMenu(sysMenu);
            return R.ok("更新成功");
        }
        return R.error("更新失败");
    }
}
